package com.yfp.client.service;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yfp.client.domain.OrderCombo;
import com.yfp.client.domain.dto.OrderListDTO;

import java.util.List;

/**
 * @author admin
 * @description 针对表【order_combo】的数据库操作Service
 * @createDate 2024-05-24 11:28:52
 */
public interface OrderComboService extends IService<OrderCombo> {

    List<String> getOrderIdList(OrderCombo orderCombo);

    List<OrderCombo> getLimitOrder(OrderListDTO orderListDTO);

    /**
     * 根据用户id查询订单
     *
     * @param userId
     * @return
     */
    List<OrderCombo> listByUserIdAndStatus(OrderListDTO userId);

    /**
     * 根据订单id更新存柜状态
     *
     * @param orderId
     * @return
     */
    void updateCupboardState(String orderId);

    /**
     * 统计完成单数
     *
     * @param clientId
     * @return
     */
    Integer countOrderByClientId(String clientId);

    /**
     * 统计前三条数据 的设备
     *
     * @param clientId
     * @return MachineId
     */
    String countMachineId(String clientId);

    /**
     * 获取最新的一个订单
     *
     * @param clientId
     * @param statusList
     * @return
     */
    OrderCombo listLastByClientId(String clientId, List<String> statusList);

    /**
     * 统计某个时间点后的订单数量
     *
     * @param clientId
     * @param date
     * @return
     */
    Integer countOrderByClientIdAndCreateTime(String clientId, DateTime date);

    /**
     * 是否是第一次下单
     *
     * @param clientId
     * @return
     */
    Boolean isFirstOrder(String clientId);

    /**
     * 根据用户id获取订单号
     * @param clientId
     * @return
     */
    String getByUserId(String clientId);
}
